package info.motteke.mixivoice4j;

import java.sql.Date;
import java.util.Calendar;

/**
 * つぶやきの投稿IDとUnix時間を相互に変換します。
 *
 * @author YWak
 *
 */
public class PostDate {

    /**
     * つぶやきのIDからミリ秒単位のUnix時間を返します。
     */
    public static long id2date(long id) {
        int second = (int)(id /           1 % 100);
        int minute = (int)(id /         100 % 100);
        int hour   = (int)(id /       10000 % 100);
        int date   = (int)(id /     1000000 % 100);
        int month  = (int)(id /   100000000 % 100) - 1;
        int year   = (int)(id / 10000000000L);
        Calendar cal = Calendar.getInstance();

        cal.set(year, month, date, hour, minute, second);
        cal.set(Calendar.MILLISECOND, 0);

        return cal.getTimeInMillis();
    }

    /**
     * ミリ秒単位のUnix時間から、つぶやきのIDを返します。
     */
    public static long date2id(long date) {
        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(date);

        long ret = 0;

        ret = (ret + cal.get(Calendar.YEAR))        * 100;
        ret = (ret + cal.get(Calendar.MONTH) + 1)   * 100;
        ret = (ret + cal.get(Calendar.DATE))        * 100;
        ret = (ret + cal.get(Calendar.HOUR_OF_DAY)) * 100;
        ret = (ret + cal.get(Calendar.MINUTE))      * 100;
        ret = (ret + cal.get(Calendar.SECOND));

        return ret;
    }

    /**
     * 時刻オブジェクトから、つぶやきのIDを返します。
     * ミリ秒単位の時刻は無視されます。
     */
    public static long date2id(Date date) {
        return date2id(date.getTime());
    }
}
